Recently, a magnetoresistive random access memory (MRAM) that uses a magnetic tunnel junction element (hereinafter referred to as an MTJ element) has been attracting attention.
A spin-transfer magnetization switching scheme is one data writing scheme of the MRAM. In the spin-transfer magnetization switching scheme, a current (write current) equal to or more than a given current value is passed through the MTJ element. In reading data, a current (read current) is also passed through the MTJ element.
Heretofore, it has been considered that a process of magnetization switching of the MTJ element caused by current supply (spin transfer) can be shown by a simple thermal activation process. However, a new magnetization switching process has been proposed that there is a time of substantially zero switching probability immediately after the start of the current supply to the MTJ element, the switching probability rises after a given period of time (e.g., see H. Tomita et al., Applied Physics Express, Vol. 1 (2008) 061303).
In the spin-transfer-type MRAM, the write current is set at a value higher than a threshold (hereinafter referred to as an switching threshold) at which magnetization is inverted by spin transfer. The read current is set at a value lower than the switching threshold.
However, due to characteristic variation of the MTJ elements in the MRAM, the switching threshold varies from element to element. There is another phenomenon. When data is repeatedly written into the same MTJ element, the switching threshold of this element fluctuates.
This causes failures such as a writing failure during writing of data, a read disturb attributed to the read current during reading of data, and a retention failure that inverts magnetization due to thermal disturbance during retention of data. Since the magnetization switching of the MTJ element (magnet) is thus stochastic process, a failure is caused during the operation of the MRAM.
In order to address such failures, an MRAM has been studied wherein error correction coding (ECC) is applied to data reading (e.g., see the specification of U.S. Pat. No. 7,370,260).
According to the technique disclosed in the specification of U.S. Pat. No. 7,370,260, even if data to be read is error-corrected, the generated error remains in data stored in the MRAM. Therefore, an error correction is made whenever data is read, leading to a decrease in operation speed. Moreover, according to a general error checking/correcting technique, no correction can be made if data (block) of a predetermined size has errors equal to or more than a predetermined number of bits.